SpringBoot 整合 ES | 您所在的位置:网站首页 › spring boot es集群 › SpringBoot 整合 ES |
参考代码: @Test public void testSearchByTemplate() { // 构建查询条件 NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(QueryBuilders.multiMatchQuery("互联网寒冬", "title", "content")) .withSort(SortBuilders.fieldSort("type").order(SortOrder.DESC))// 按照帖子分类排序 .withSort(SortBuilders.fieldSort("score").order(SortOrder.DESC))// 按照帖子分数排序 .withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC))// 按照帖子发布日期排序 .withPageable(PageRequest.of(0, 10))// 每页十条数据 .withHighlightFields( // 标题和内容中的匹配字段高亮展示 new HighlightBuilder.Field("title").preTags("").postTags(""), new HighlightBuilder.Field("content").preTags("").postTags("") ).build(); // 得到查询结果返回容纳指定内容对象的集合SearchHits SearchHits searchHits = elasticsearchRestTemplate.search(searchQuery, DiscussPost.class); // 设置一个需要返回的实体类集合 List discussPosts = new ArrayList(); // 遍历返回的内容进行处理 for (SearchHit searchHit : searchHits) { // 高亮的内容 Map highlightFields = searchHit.getHighlightFields(); // 将高亮的内容填充到content中 searchHit.getContent().setTitle(highlightFields.get("title") == null ? searchHit.getContent().getTitle() : highlightFields.get("title").get(0)); searchHit.getContent().setTitle(highlightFields.get("content") == null ? searchHit.getContent().getContent() : highlightFields.get("content").get(0)); // 放到实体类中 discussPosts.add(searchHit.getContent()); } // 输出结果 System.out.println(discussPosts.size()); for (DiscussPost discussPost : discussPosts) { System.out.println(discussPost); } } 复制代码 总结(1)Elasticsearch可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司。 (2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)。 (3)对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂。 |
CopyRight 2018-2019 实验室设备网 版权所有 |